A geographic information system (GIS) is a system for archiving, retrieving, and manipulating data that has been stored and indexed according to the geographic coordinates of its elements. A geographic information system generally can utilize a variety of data types, such as imagery, maps, and tables. Typical geographic information systems support the display of information such as lines to indicate roadway paths, images of a planetary surface to show natural features, text to indicate city and country names, and terrain elevation data to represent mountains and valleys. Often such systems allow “layers” of such data to be defined and displayed, and in some cases a set of such information is provided with the system as data files or is made available as a network-accessible resource, as in the case of a distributed geographic information system (DGIS). (For purposes of simplicity, the term “GIS” will be used herein to refer to both GISs and DGISs collectively). Even in data-rich environments it may be necessary for users and developers to create, store, and share annotations in the form of additional information to be displayed within or above standard data layers. An example of an annotation element would be a marker indicating the location of a fire hydrant.
Generally, conventional geographic information systems have limited abilities to interactively display large numbers of annotation elements. For example, a GIS that could readily display one, ten, or one hundred fire hydrant markers may experience performance degradation in loading, processing, or displaying annotation data for one million markers. This performance decline may be manifested as a noticeable or intolerable pause when loading a large dataset, excessive use of memory and processing resources to operate on a large data set, or slowness of visual updates during rotation, zooming, and otherwise displaying a large dataset. In some cases, a typical GIS might fail to operate when certain internal algorithmic or implementation limits are exceeded by the size of a very large set of annotations or when the number of annotations creates an algorithmic processing burden that is infeasible for realizable computation. In this sense, existing GIS are effectively limited in their ability to manage very large sets of annotation data while maintaining interactive performance levels in all aspects of operation.
When conventional geographic information systems have attempted to manage the complexity of very large datasets it has been through mechanisms controlled by the logic and internal configuration of the GIS itself. For example, a GIS may detect that a dataset to be loaded is too large for direct operation at interactive rates and therefore load only a limited number (N) of data elements such as the first N, the last N, a random selection of N elements from the data, or, perhaps, ask the user if the default limit (N) should be raised at the expense of performance and potentially, improper program operation. For example, a coastline may be well represented by a simple specification when viewed at great distance yet might require more detail when viewed more closely. Further, the totality of the coastline at the greater level of detail may well contain too much data for the GIS system to load and process at interactive rates, even if any unseen data are discarded through the well-known techniques of view-frustum culling.